package client;

import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;

import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import be.ipl.domaine.Jeton;
import be.ipl.domaine.Joueur;
import be.ipl.domaine.Partie;
import be.ipl.domaine.Tableau;
import be.ipl.ucc.GestionUnePartie;



public class TestNG_FINITO {
	private String joueur1 = "Michel";
	private String joueur2 = "Emmeline";
	private String joueur3 = "Olivier";
	private Partie p;

	private static  GestionUnePartie gp;
	@BeforeClass
	public static void setUpBeforeClass() {
		try {
			Context jndi = new InitialContext();
			gp = (GestionUnePartie) jndi.lookup("ejb:EARFINITO/Finito_Games/GestionPartieImpl!be.ipl.vingtetun.usecases.GestionPartie");
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
	@Test
	void testCreerPartie1(){
		p=gp.creerPartie("test", joueur1);
		Assert.assertNotNull(p);
	}
	
	@Test(dependsOnMethods="testCreerPartie1")
	void testCreerPartie2(){
		Assert.assertEquals("test", p.getNom());
	}
	@Test(dependsOnMethods="testCreerPartie2")
	void testCreerPartie3(){
		for (Tableau t : p.getTableaux()) {
			if(t.getJoueur().getLogin().equals(joueur1)){
				assertTrue(true);
			}
		}
		Assert.fail();
	}
	@Test(dependsOnMethods="testCreerPartie3")
	void testRejoindrePartie1(){
		assertTrue(gp.rejoindrePartie(joueur2));
	}
	@Test(dependsOnMethods="testRejoindrePartie1")
	void testRejoindrePartie2(){
		try {
			gp.rejoindrePartie("momo");
		} catch (Exception e) {
			assertTrue(true);
		}
		Assert.fail();
		
	}
	@Test(dependsOnMethods="testRejoindrePartie2")
	void testRejoindrePartie3(){
		assertTrue(gp.rejoindrePartie(joueur3));
		assertFalse(gp.rejoindrePartie("Pierre"));
	}
	@Test(dependsOnMethods="testRejoindrePartie3")
	void testCommencerPartie1(){
		assertTrue(gp.commencerPartie());
	}
	
	
	@Test
	void testObtenirScore2(){
		Partie partie = gp.creerPartie("test", "momo");
		Assert.assertEquals("momo", partie.getTableaux());
		
	}
	@Test
	void testReprendrePartie(){
		
	}
	
	@Test
	void testSuspendrePartie(){
		
	}
	@Test
	void testCloturerPartie(){
		
	}
	@Test
	void testLancerDe(){
		
	}
	@Test
	void testDonnerTroisJetons(){
		
	}
	@Test
	void testDonnerUnJeton(){
		
	}
	@Test
	void testPlacerJeton(){
		
	}

	
  
}
